专利摘要:
In the program execution environment, an application encrypted using secret key-A is supplied to decryption unit 82, and encrypted public key encrypted using secret key-B corresponding to public key-B, public key-B. -A (corresponding to Secret-A) is supplied to the decoder 84. The decryption unit 84 decrypts the encryption public key-A using the public key-B and supplies the decryption unit 82 with the resultant public key-A. The decryption unit 82 decrypts the encrypted application program using the public key supplied from the decryption unit 84 and supplies the Java byte code as the decryption result to the Java virtual machine 83. The Java virtual machine 83 analyzes and executes the Java byte code supplied from the decoding unit 82. As a result, it is possible to ensure that only programs developed by legitimate software developers can be executed in any program execution environment.
公开号:KR19980081644A
申请号:KR1019980014447
申请日:1998-04-23
公开日:1998-11-25
发明作者:다께우찌아끼까즈;난바신지
申请人:이데이노브유끼;소니가부시끼가이샤;
IPC主号:
专利说明:

Information processing apparatus, methods and recording media
The present invention relates to an information processing apparatus, a method and a recording medium. In particular, the present invention relates to an information processing apparatus, a method and a recording medium in which only a program developed by a legitimate program developer is executed in a specific program execution environment.
Java, a trademark of Sun Microsystem of the United States, has attracted a lot of attention because of its suitability for the rapidly expanding Internet. The term Java is a virtual machine (hereinafter referred to as Java virtual machine) that defines a processor architecture suitable for the execution of an object-oriented language, a Java language, a program written in Java (hereinafter referred to as a Java program), and other elements related to Java. Each of or is used as a generic term.
The term virtual machine refers to a virtual machine that is assumed to install a language processing system, rather than a virtual machine used to perform a single computer virtually as if there are a large number of computers.
The Java virtual machine is installed on a real computer to operate on an operating system (OS) installed in the computer. On the other hand, a Java program is compiled into binary code consisting of a set of instructions of the Java virtual machine. Binary code can be executed by any hardware on which the Java virtual machine can operate. Therefore, the compiled Java program can be executed on various platforms as long as the Java virtual machine operates.
Based on the fact that Java programs can be run on any machine once Java Virtual Machine is installed, and on other grounds, Java Virtual Machine can be spread to many users and many applications are developed and distributed to many users (paid or free). Irrespective).
Under the above circumstances, for example, an electronic contract has been developed by a third party who develops and distributes a program execution environment such as Java virtual machine, and wants to restrict the distribution of applications executed in such a program execution environment. Sometimes you want to allow only one person to distribute your application.
On the other hand, in the Java virtual machine, an intermediate code called a byte code (Java code) obtained by compiling a Java program with a Java compiler is interpreted and executed. Java bytecode compiles them relatively easily, making reverse engineering easy to execute. Therefore, it is necessary to prevent imitation and deformation by third parties.
1 is a block diagram showing a first functional configuration example of a program execution system.
2 is a block diagram showing a fifth functional configuration example of a program execution system.
3 is a flowchart showing the process of the software developer server 31.
4 is a block diagram showing a third functional configuration example of a program execution system.
5 is a flowchart showing the process of the software developer server 31.
6 shows a correlation between the resources of the computer 1 and the resources of the Java virtual machine 11 mounted on the computer.
7 shows processing of the Java virtual machine 11.
8, 9A, and 9B show processing of the Java virtual machine 11.
10 is a block diagram showing a configuration example of an embodiment of a program providing system according to the present invention.
FIG. 11 is a block diagram showing an example of the configuration of the software developer server 31 shown in FIG.
FIG. 12 is a block diagram showing a configuration example of the program certification authority server 32 shown in FIG.
FIG. 13 is a block diagram showing an example of the configuration of the user terminal 33 shown in FIG.
14 is a block diagram showing an example of the configuration of an encryption / decryption system.
Fig. 15 is a block diagram showing a configuration example of an encryption / decryption system using digital signature.
16 is a flowchart showing the process of the software developer server 31.
17 is a flowchart showing a process of the program certification authority server 32.
18 is a block diagram illustrating a second functional configuration example of a program execution system.
19 is a flowchart showing a process of the program certification authority server 32.
20 is a block diagram illustrating an exemplary functional configuration of a loader.
Fig. 21 is a block diagram showing a fourth functional configuration example of a program execution system.
22 is a block diagram illustrating a configuration example of the software developer server 31.
* Explanation of symbols on the main parts of the drawings
1. Computer 2. Central Processing Unit
3. Register 4. Memory
11. Java virtual machine 13. Register
14.Memory 21.Java Virtual Machine
31. Software developer server 32. Program certification authority server
33. User terminal 34. Network
35. Recording medium 41. CPU
42.ROM 43.RAM
44. Input section 45. Output section
46. Auxiliary Memory 47. Communication Control Unit
CPU 52.ROM
53.RAM 54.Input
55. Output 56. Auxiliary Memory
57. Communication control unit 61. CPU
62.ROM 63.RAM
64. Input section 65. Output section
66. Auxiliary memory device 67. Communication control unit
71. Encryption unit 72. Decryption unit
81.Input unit 82.Decoder
83. Java virtual machine 84. Decoding unit
91. Digest Creator 92. Encryptor
93. Decoder 94. Digest Composer
95. Signature Verifier 101. Input
102. Message digest system 103. Signature verification unit
104. Virtual machine input control unit 111. Input unit
112. Message digest system 113. Signature verification unit
114. Execution Systems 121,122. Encryptor
131,132. Decryptor
An information processing apparatus according to the first aspect of the present invention is adapted by first key decryption means and first key decryption means for decrypting, using a second key, an encrypted version of a first key necessary for decrypting an encrypted version of a program. And program decryption means for decrypting the encrypted version of the program using the first key obtained by the first key, and execution means for executing the program output from the program decryption means.
In the information processing method according to the second aspect of the present invention, the encrypted version of the first key necessary for decrypting the encrypted version of the program is decrypted using the second key, and the program is encrypted using the first key obtained through decryption. Decrypting the version and executing the program obtained by decrypting.
The recording medium according to the third aspect of the present invention uses a second key to decrypt the encrypted version of the first key necessary for the computer to decrypt the encrypted version of the program, and uses the first key obtained through the decryption. A recording medium on which a program for decrypting an encrypted version and executing a program obtained by decrypting is recorded.
An information processing apparatus according to a fourth aspect of the present invention includes encryption means for encrypting a program with an encrypted text that is decrypted by code executable by the information processing apparatus according to the first aspect of the present invention.
An information processing method according to the fifth aspect of the present invention includes the step of encrypting a program with a cipher text that is decrypted by code that can be executed by the information processing apparatus according to the first aspect of the present invention.
A recording medium according to the sixth aspect of the present invention is a recording medium on which a program encrypted with an encrypted text is decoded into a code executable by the information processing apparatus according to the first aspect of the present invention.
An information processing apparatus according to a seventh aspect of the present invention includes execution means for executing a program, key decryption means for decrypting, using a second key, an encrypted version of a first key used to verify a signature added to the program; Verification means for verifying whether or not the signature added to the program is legitimate using the first key obtained through decryption by the key decryption means; A supply means for supplying to the execution means.
An information processing method according to the eighth aspect of the present invention uses a second key to decrypt an encrypted version of a first key used to verify a signature added to a program, using a first key obtained through decryption. And verifying whether the signature being added to the program is legitimate or not, and executing the program only when it is confirmed to be legitimate.
The recording medium according to the ninth aspect of the present invention uses a second key to decrypt an encrypted version of a first key used for verifying a signature added to a program by a computer, and decrypts the first key obtained through decryption. It is a recording medium in which a program is recorded so as to confirm whether a signature added to a program is valid or not, and to execute the program only when it is verified as legitimate.
The information processing apparatus according to the tenth aspect of the present invention includes processing means for processing a program so that the signature is verified as legitimate in the information processing apparatus according to the seventh aspect of the present invention.
An information processing method according to an eleventh aspect of the present invention includes processing a program such that the signature is verified as legitimate in the information processing apparatus according to the seventh aspect of the present invention.
In the recording medium according to the twelfth aspect of the present invention, a program is processed in which the signature is verified in the information processing apparatus according to the seventh aspect of the present invention.
In the information processing apparatus according to the first aspect of the present invention, the first key decrypting means decrypts the encrypted version of the first key necessary for decrypting the encrypted version of the program using the second key, and the program decrypting means is the first. The encrypted version of the program is decrypted using the first key obtained by decrypting by the key decryption means. The execution means executes the program output from the program decoding means.
In the information processing method according to the second aspect of the present invention, the encrypted version of the first key necessary for decrypting the encrypted version of the program is decrypted using the second key, and the decryption of the program using the first key obtained through decryption. The encrypted version is decrypted and the program obtained by decrypting is executed.
On the recording medium according to the third aspect of the present invention, the encrypted version of the first key necessary for decrypting the encrypted version of the program is decrypted using the second key, and the first key obtained through decryption is used to decrypt the program. A program that decrypts the encrypted version and causes the computer to execute the program obtained by decrypting is recorded.
In the information processing apparatus according to the fourth aspect of the present invention, the encrypting means encrypts the program with a cipher text that is decrypted by a code executable by the information processing apparatus according to the first aspect of the present invention.
In the information processing method according to the fifth aspect of the present invention, the program is encrypted with a cipher text that is decrypted by code that can be executed by the information processing apparatus according to the first aspect of the present invention.
In the recording medium according to the sixth aspect of the present invention, a program encrypted with a cipher text that is decrypted into a code executable by the information processing apparatus according to the first aspect of the present invention is recorded.
In the information processing apparatus according to the seventh aspect of the present invention, the key decryption means decrypts the encrypted version of the first key used to verify the signature added to the program by using the second key, and the verifying means is the key decryption means. By using the first key obtained through decryption by means of verification, it is checked whether the signature added to the program is valid or not. The supply means supplies the execution means with a program which has been confirmed as legitimate by the verification means and is being signed.
In the information processing method according to the eighth aspect of the present invention, an encrypted version of a first key used to verify a signature added to a program is decrypted using a second key, and a first key obtained through decryption is obtained. To verify whether the signature being added to the program is legitimate or not, and the program is executed only when it is verified to be legitimate.
In the recording medium according to the ninth aspect of the present invention, a first key obtained by decrypting, using a second key, an encrypted version of a first key used to verify a signature added to a program by a computer. Is used to check whether the signature being added to the program is legitimate or not, and to execute the program only when it is confirmed to be legitimate.
In the information processing apparatus according to the tenth aspect of the present invention, the processing means processes the program so that the signature is verified as legitimate in the information processing apparatus according to the seventh aspect of the present invention.
In the information processing method according to the eleventh aspect of the present invention, in the information processing apparatus according to the seventh aspect of the present invention, the program is processed so that the signature is confirmed to be valid.
In the recording medium according to the twelfth aspect of the present invention, in the information processing apparatus according to the seventh aspect of the present invention, a program is processed so that the signature is verified as being legitimate.
Embodiments of the present invention will be described below. Before that, in order to clarify the relationship between each means of the invention described in the claims and the components of the following examples, each means may be viewed in such a way as to be followed by the component of the corresponding embodiment in parentheses, which is merely an example. The features of the invention are described below.
An information processing apparatus according to the first aspect of the present invention is an information processing apparatus for performing a process for executing a program, and the information processing apparatus for decrypting the encrypted version of the first key necessary for decrypting the encrypted version of the program using the second key. Encryption of the program using one key decryption means (for example, the decryption unit 84 shown in FIG. 1 and the decryption unit 131 shown in FIG. 2) and the first key obtained by decrypting by the first key decryption means. Program decoding means (for example, the decoding unit 82 shown in FIG. 1 and the decoding unit 132 shown in FIG. 2) for decoding the version, and execution means for executing the program outputted from the program decoding means (for example, , Java virtual machine 83 shown in FIGS. 1 and 2).
The information processing apparatus further includes second key decryption means (for example, the decryption unit 84 shown in Fig. 2) for decrypting the encrypted version of the second key using the third key when the second key is encrypted. Include.
An information processing apparatus according to a fourth aspect of the present invention is an encryption means (e.g., the program shown in Fig. 3) for encrypting a program with an encrypted text that is decrypted by a code that can be executed by the information processing apparatus according to the first aspect of the present invention. CPU 41 shown in Fig. 11 to execute the processing step S7.
An information processing apparatus according to a seventh aspect of the present invention is an information processing apparatus for executing a program, and includes execution means (for example, the Java virtual machine 83 shown in Fig. 4) for executing the program, and is added to the program. A key decryption means (for example, the decryption unit 84 shown in Fig. 4) for decrypting the encrypted version of the first key used for verifying the signature using the second key, and obtained by decryption by the key decryption means. Verification means (for example, signature verification unit 103 shown in Fig. 4) for confirming whether or not the signature added to the program by using the first key being lost and the verification means are verified and signed And supply means (for example, the virtual machine input controller 104 shown in Fig. 4) for supplying the added program to the execution means.
An information processing apparatus according to a tenth aspect of the present invention is an information processing apparatus for executing a program, and in the information processing apparatus according to the seventh aspect of the present invention, processing means for processing a program so as to confirm that a signature is legitimate (for example, And the CPU 41 shown in FIG. 11 for executing the program processing steps S22 and S23 shown in FIG.
Of course, the above description does not mean that each means is limited to the components that follow.
The following embodiments are related to the case where the present invention is applied to a Java virtual machine, but the present invention can be applied to a real machine itself in addition to a virtual machine such as a Java virtual machine.
Java is described in detail in, for example, Nikkei Electronics 1996. 3. 25 (no. 658) and 1996. 6. 17 (no. 664) issued by Nikkei Business Publication, and will be described briefly here.
The Java virtual machine is an abstract execution machine, and is a real program executed by a real computer. Like a real computer, a Java virtual machine has program counters, stack registers, general purpose registers, memory as a stack or heap, and other resources, which map to resources on the real computer.
The actual computer 1 has a central processing unit 2, a register 3 embedded in the central processing unit 2, a memory 4, and other resources as shown in FIG. When the Java virtual machine 11 is installed in the computer 1, the resources of the real computer 1 are mapped to the Java virtual machine 11. In the embodiment shown in FIG. 6, the Java virtual machine 11 has registers 13, memory 14, and other resources. The register 13 is mapped to the register 3 and the address 200 of the memory 14 is mapped to the address 100 of the memory 4.
In the actual computer 1, the command to the central processing unit 2 is executed as an operation on the resource. Similarly, in the Java virtual machine 11, instructions to be executed as operations on the resources are defined. The Java language is a language for writing instructions to the Java virtual machine 11. In the Java virtual machine 11, Java byte code obtained by compiling a source program described in Java language with a Java compiler is interpreted and executed.
That is, as shown in Fig. 7, a Java language program, which is a source program described in the Java language, is compiled into Java bytecode by the Java compiler 21. The Java byte code is input into the Java machine 11 and converted into machine code that can be interpreted by the actual computer 1 (central processing unit 2). In particular, as shown in FIG. 8, the move # 125 and register 13 instructions (Java bytecode instructions) described in Java bytecode and meaning that the number 125 is set in register 13 are used in the Java virtual machine 11. The Java virtual machine 11 converts this into an instruction (machine language instruction) of move # 125, register 3 described in machine code.
In the computer 1, the numerical value 125 is set in the register 3 of the computer 1 as shown in Fig. 9A as a result of execution of an instruction written in machine code.
As described above, the register 13 of the Java virtual machine 11 is mapped to the register 3 of the computer 1. Therefore, the setting value 125 in the register 3 of the computer 1 means the setting value 125 in the register 13 as viewed from the Java system as shown in Fig. 9B.
In the same manner as described above, the Java byte code input to the Java virtual machine is executed as manipulated on the resources of the computer 1 converted into machine code for the computer 1 and mapped to the resources of the Java virtual machine 11. do. In the Java virtual machine system 11, the operation corresponds to an operation on the resource of the Java virtual machine 11, and the execution of the foregoing operation means the execution of a Java byte code instruction.
Therefore, as described above, by operating the Java virtual machine on the actual computer, the compiled Java program can be executed regardless of the CPU (central processing unit) and the OS used in the computer.
An example of a technique that executes the latter by converting Java bytecode into machine code is to translate the instructions into machine code and execute the machine code in a translation format that is executed one by one as in the case of executing a basic language program. Another example is the JIT (just in time) compiler format in which instructions are translated into machine code and execution of machine code is executed in its entirety.
The interpreter format used to execute Basic language programs differs from that used to translate Java bytecodes, while intermediate code (Java bytecodes) is translated in the latter way, while source code is translated in the former way. However, these two approaches are not classified in this example (it is not necessary to do so).
10 is a configuration example of an embodiment of a program providing system according to the present invention (the term system refers to a collection of a plurality of devices that are logically correlated with each other, regardless of whether or not the devices are physically mounted in a single chassis). Indicates.
In this program providing system, when a software developer distributes an application which is not authenticated by the program certification authority, execution of the application is restricted on the user terminal 33 of the user.
For example, when a software developer wants to develop and distribute an application running on a Java virtual machine as a program execution environment developed by a program certification authority or a person who has requested a program certification to a program certification authority. A licensing agreement is made with the program certification body to achieve this effect. When a license agreement is made, the program certifier passes the key to the software developer as a certificate that is used to encrypt the application or add a signature to it.
In particular, in this embodiment, the encryption of the application or adding a signature to it is to the public key cryptography represented by the RSA method (designed by three researchers at MIT; RSA is derived from the first letter of these names). Thus it is executed. In this case, a set of secret key-A used for encryption in accordance with public key cryptography and public key-A used to decode the result of encryption using secret key-A is passed to the software developer.
The software developer server 31 of the software developer and the program certification authority server 32 of the program certification authority can communicate with each other via networks 34 such as the Internet, public lines, CATV networks, terrestrial networks, and satellite networks. Private key-A and public key-A are communicated, for example, via network 34.
The private key-A and public key-A are delivered by the software developer itself and delivered to the contracted software developer, rather than being prepared by the program certification authority.
After the private key-A and the public key-A are given, the software developer passes the public key-A from the software developer server 31 to the program certification authority server 32 via, for example, the network 34.
When the software developer server 31 receives the public key-A, the program certification authority server 32 encrypts the encrypted public key-A (hereinafter referred to as the enemy encryption public key) to the software developer server 31. Pass through.
In the program certification authority server 32, the public key-A is encrypted according to the public key encryption method. That is, in the program certification authority server 32, a set of secret key-B used for encryption and public key-B used for decrypting the result of encryption using the secret key-B is prepared and public key-A Is encrypted using the private key-B.
On the other hand, in the software developer server 31, the encryption public key-A sent from the program certification authority server 32 is received and the encryption of the application program or adding a signature to it is performed using the private key-A. The encrypted or signed application is stored in association with the encrypted public key-A.
Upon receiving a request of an application program from the user terminal 33 via the network 34, for example, the software developer server 31 sends the application program (encrypted or signed as described above) to the user terminal 33. Is transmitted via the network 34 together with the corresponding encrypted public key-A.
As a program execution environment developed by a program certification authority or a person who requires a program certification authority to authenticate a program, a Java virtual machine is installed in a user terminal as described below. The program certification authority 32 is a Java program execution environment including a Java virtual machine installed by a program certification authority, and a program execution system (i.e., a program that causes a computer (user terminal 33) to operate as a program execution environment). Save it. When the user requests the program certification authority server 32 to operate the user terminal and send the program execution system, the program certification authority server 32 sends the program execution system to the user terminal via the network 34, for example. In this way, the program execution system installed by the program certification authority is installed in the user terminal 33.
The program certification authority server 32 sends the public key-B to the user terminal together with the program execution system. The received public key-B is stored in the user terminal 33.
Like the Java-based system in which the program execution system is installed in the user terminal 33, the application program transmitted from the software developer server 31 is executed normally only when authenticated by the program certification authority.
That is, in the user terminal 33, the encrypted public key-A sent from the software developer server 31 is decrypted into the public key-A using the public key-B sent from the program certification authority server 32. Moreover, in the user terminal 33, the encryption application transmitted from the software developer server 31 is decrypted using the public key-A thus obtained. The decoded application runs in the Java virtual machine. Alternatively, the validity of the signature added to the application program transmitted from the software developer server 31 is verified using the public key-A. The application runs on the Java virtual machine only when the signature is verified.
Therefore, if the key decrypted using public key-B is encrypted public key-A, i.e., not legitimate, public key-A cannot be obtained as a result of decryption. Even if an application program is decoded using this decoding result, an application program which is normally processed on the Java virtual machine cannot be obtained; In other words, the Java virtual machine cannot operate correctly.
Similarly, when a signature is verified using a key other than public key-A, the signature is justified. Applications cannot run on Java virtual machines as well.
As described above, when the application program transmitted from the software developer server 31 is not authenticated by the program certification authority, Java cannot be executed (at least normally) on the user terminal 33 as in the above-described system.
As a result, a person who has developed and distributed a Java virtual machine as a program execution environment can restrict unauthorized distribution of an application program developed by a third party and executed on the Java virtual machine. For example, the former may only permit distribution of applications to contracted software developers.
In the above example, after obtaining the public key-A, the secret key-A, and the encrypted public key-A, the software developer can freely distribute an application program that can be executed on the virtual machine installed in the user terminal 33. Therefore, each newly developed application program is authenticated without the troublesome task of transmitting to the program certification authority server 32.
However, there are cases where a program certification authority wants to restrict the use of public key-A, secret key-A, and cryptographic public key-A by several software developers to multiple programs. This can be done, for example, by the program certifying authority changing the private key-B used to encrypt public key-A (in this case, the program certifying authority may distribute the public key corresponding to the new private key to the user). Need). In addition, the above object can be achieved in the following manner without changing as described above. If a program certification authority assigns each software developer a unique public key-A and a private key-A, the encrypted public key or signature can be used to identify the software developer who distributes a particular application. For example, the program's certification authority can easily identify software developers who have distributed an application in excess of the number described in the license agreement, and that the public key-A and private key-A and encrypted public-key-A Use has an effect that is limited to the above number of programs.
For example, an application can be distributed to a user by recording on a recording medium 35 such as a compact disc (ROM) or a magnetic disk, mailing it or selling it at a counter. Even in this case, as in the above example, if the application program is not authenticated by the program certification authority, such an application program cannot be executed in the user terminal 33 such as Java virtual machine.
In the above example, even if the data (public key-A and secret key-A and encrypted public key-A) are exchanged between the software developer and the program certification authority through the network 34, for example, a recording medium on which data is recorded ( Data exchange is also performed by sending an e-mail (not shown).
Similarly, the program certification authority may supply the program execution system and the public key-B to the user by recording on a recording medium 36 such as, for example, a CD-ROM or a magnetic disk, mailing or selling at a counter.
In addition, in the embodiment of FIG. 10, a plurality of software developers, a program certification authority server 32, and a user terminal 33 may be provided.
FIG. 11 shows a configuration example of the software developer server 31 shown in FIG.
The CPU 41 executes various types of processing by executing a program stored in the auxiliary memory device 46 under the control of the operating system stored (recorded) in the auxiliary memory device 46. Read-only memory (ROM) 42 stores an initial program loading (IPL) program and other programs. A random access memory (RAM) 43 stores a program executed by the CPU 41 and data necessary for the operation of the CPU 41. The input unit 44, which is a keyboard or a mouse, for example, is operated by inputting a desired command or data. An output unit, for example a display device or a printer, displays or prints necessary information. The auxiliary memory device 46, which is a hard disk, for example, stores the execution result of the CPU 41 and other necessary data as well as other programs executed by the operating system and the CPU 41. The communication control unit 47 controls communication executed via the network 34.
FIG. 12 shows a configuration example of the program certification authority server 32 shown in FIG. 10, and FIG. 13 shows a configuration of the user terminal 33 shown in FIG.
The program certification authority server 32 is composed of the CPU 51 to the communication control unit 57 and the user terminal is constituted of the CPU 61 to the communication control unit 67. Since the above components are configured in the same manner as the CPU 41 to the communication control unit 47 in Fig. 11, the description thereof will be omitted.
Next, encryption / decryption according to the public key encryption method will be described as one method of encryption / decryption of public key-A or an application program.
14 shows an example of the configuration of an encryption / decryption system conforming to a public key encryption method.
Plain text is input to the encryptor 70 as an object of encryption. The encryptor 70 is called a secret key and encrypts the plain text into cipher text using an encryption key unique to each person.
On the other hand, the cipher text generated by the encryptor 71 is input to the decryptor 72. The decryptor 72 decrypts the ciphertext using the decryption key called the public key as the original plaintext and discloses it to the public.
Like the encryptor 71, the software developer server 31 uses the private key-A to encrypt the Java bytecode as an application. Like the encryptor 71, the program certification authority server 32 encrypts the public key-A sent from the software developer server 31 using the secret key-B.
On the other hand, like the decryptor 72, the user terminal 33 decrypts the encrypted public key-A using the public key-B and also decrypts the application program encrypted using the decrypted public key-A.
The encryption / decryption method is not limited to the public key encryption method, but a method other than the common key encryption method represented by the data encryption standard (DES) method (developed by IBM Corporation and actually used as a standard of the US government). This may also be used. In common key cryptography, encryption / decryption is performed using a common key that is not disclosed to anyone other than the party. In public key cryptography, the secret key for the encryption is different from the public key for decryption (inversely, the public and secret keys can be used for encryption and decryption, respectively). In contrast, in common key cryptography, the same, common key can be used for both encryption and decryption. Therefore, it is necessary to keep the common key secret from anyone other than the parties.
Next, a signature addition method conforming to public key cryptography is described as one method of applying a signature (digital signature) to an application.
Fig. 15 shows a configuration example of an encryption / decryption system conforming to a public key encryption method for creating / verifying a signature.
The plain text as a subject of encryption is input to the digest composer 91 and creates a digest of the received plain text according to an algorithm such as MD5 (MD) or SHA-1 (SHA). The message digest class is an engine class designed to provide the functionality of cryptographically protected message digests such as SHA-1 or MD5. The cryptographically protected message digest takes any size input (byte array) and produces a fixed size output called a digest. Digest has the following properties: It must be computationally infeasible to find other input strings that can produce the same digest. The digest cannot expose anything about the input used to create it. Message digests are used to create unique and reliable identifiers of data. They are sometimes called digital fingerprints of data.
The digest corresponds to the mechanical abbreviation of the plain text and the other digest is written for the other plain text as input. Digest is created by transforming plain text using, for example, a hashing function.
By the way, a method of mapping a set of ranges in which a keyword used to search a database to a certain numerical range (corresponding to a record number or an suffix of an array) can be taken is called hashing. A variant of this mapping is the hashing function.
The digest created by the digest creator 91 is supplied to the encryptor 92. The encryptor 92 encrypts the digest using a secret key as in the encryptor 71 shown in FIG. 14, for example, and outputs the encrypted digest as a digital signature. The digital signature is appended to the original plain text and the resulting signed plain text is output.
On the other hand, the digital signature as part of the signed plain text is input to the decoder 93 and the sentence as the remainder is input to the digest generator 94. The decoder 93 decodes the digital signature into a digest using a public key, for example, as the decoder 72 shown in FIG. The digest thus obtained is supplied to the signature verifier 95.
Like the digest composer 91, the digest composer 94 creates a digest of the received plain text and supplies it to the signature verifier 95.
The signature verifier 95 determines the validity of the signature (digital structure), that is, verifies the signature. In particular, the signature verifier 95 confirms whether or not the digest that the decoder 93 outputs matches the digest that is the output of the digest generator 94. If the two digests do not coincide with each other, the validity of the signature is denied as the plaintext is distorted or the public key used in the decoder 93 is incorrect.
On the other hand, if the digest, which is the output of the decoder 93, matches the digest, which is the output of the digest generator 94, then the validity of the signature is not distorted or the public key used in the decoder 93 is confirmed with correct judgment. .
The signature verifier 95 is also supplied with a plain text whose signature constitutes plain text. The signature verifier 95 outputs plain text when the signature is verified.
When the signature of the application is added to the application in the software developer 31, the signature (digital signature) is created by creating a digest of the application and encrypts the digest using the secret key-A in the manner described above. On the other hand, in the user terminal 33, the signature is decoded into a digest using the public key-A and the digest is created in an application program. The validity of the signature is checked by judging whether the two digests match each other.
The signature serves to identify who adds it (in this example, the software developer). The source of the signed application can be easily determined from the signature. For example, if an application has a bug or the like, a software developer who distributes such an application with a bug can easily be found.
In addition, if a signed application is infected by being distorted or referred to as a computer virus, the digest made by the application does not match the digest obtained by decoding the signature, which negates the validity of the signature. Therefore, a distorted or virus infected application is prevented from running in the user terminal 33.
The private key-A used to create the signature must be kept secret from a third party (in this example, other than the software developer and program certifying authority), and even if the third party wants to translate the application, It's hard to find.
The signature creation / checking method is not limited to using the public key encryption method described above.
Next, a description will be given of the processing executed by the user terminal 33 in the case where authentication of the application program is performed through encryption using the software developer server 31, the program certification authority server 32, and the secret key-A. .
First, the processing of the software developer server 31 will be described with reference to the flowcharts of FIGS. 3 and 16.
The software developer obtains a public key-A and a private key-A by making a license agreement with the program certification authority, for example, by asking the program certification authority to issue it. In the software developer server 31, first, in step S1 shown in Fig. 16, the communication control unit 47 transmits the public key-A to the program certification authority server 32 via the network and authenticates with the program certification authority. To be. The process then goes to step S2, where it is determined whether or not the encrypted public key-A as the CPU 41 authenticated public key-A has been transmitted from the program certification authority server 32. If it is determined that the authenticated public key-A has not yet been sent, the process returns to step S2.
If it is determined in step S2 that the authenticated public key-A has been received, the process goes to step S3, and the communication control unit 47 receives the encrypted public key-A. The process then goes to step S4, where the encrypted public key-A received by the communication control unit 47 is transferred to the secondary storage and stored there. The process then ends.
The software developer then develops an application that runs on the Java virtual machine and is stored (recorded) in, for example, secondary storage 46. In the software developer server 31, in step S6 shown in FIG. 3, the CPU 41 compiles the application program stored in the auxiliary memory device 46 into Java bytecode according to the Java compiler program. Java bytecode is also supplied to and stored in the secondary memory 46.
The process then goes to step S7, where the CPU 41 encrypts the Java bytecode obtained by compiling in step S6 using secret key-A, for example, in the manner described above with reference to FIG. Write encrypted byte code. In step S8, the encrypted bytecode is stored in the secondary storage 46 to correlate with the encryption public key-A. The process then ends.
Next, the processing of the program certification authority server 32 will be described with reference to the flowchart of FIG.
For example, a program certification authority is a program execution environment in which a Java developer or a party is required to act on behalf of a party. For example, the program certification authority server 32 executes an authentication process for authenticating the public key-A as authentication of an application of an authenticated party.
In particular, it is executed in the following manner. First, in step S11, the CPU 51 of the program certification authority server 32 determines whether or not the public key-A has been transmitted from the software developer server 31 as an object of authentication via the network, for example. If it is determined that the public key-A has not been transmitted, the process returns to step S11. If it is determined in step S11 that the public key-A has been transmitted, the process goes to step S12, and the CPU 51 determines whether the received public key-A is from a contract, that is, usually from a software developer. To judge.
When a program certification authority enters into a license agreement that permits software developers and software developers to develop and distribute applications that run on, for example, Java virtual machines, they issue, for example, IDs and passwords to software developers. . The ID and password issued at the time of signing the contract are delivered to the regular software developer, that is, the contract is signed with the public key as a subject of authentication. In step S12, a determination is made whether or not the public key-A is from a normal software developer based on these IDs and passwords.
If it is determined in step S12 that the public key-A is not from a normal software developer, that is, when the public key-A is sent from a software developer for which no license agreement has been made, the process goes to step S13. The communication control unit 57 transmits a message to the software developer, so that the public key-A cannot be authenticated unless a license agreement is made.
On the other hand, if it is determined that the public key-A is from a normal software developer, the process goes to step S14, and the CPU 51 encrypts the received public key-A with the encrypted public key-A. Public key-A is thus authenticated.
The process goes to step S15, where the communication control unit 57 converts the encrypted public key-A through the network 34 as a result of the authentication of the public key-A (in this example, the software footer server 31). ) Is sent to the sending software developer. The process then ends.
1 shows an example of the functional configuration of a program execution system as a program execution environment for executing an application program in the user terminal 33.
The input unit 81 accepts not only the public key-B but also the encrypted byte code (encryption Java code) and the encrypted public key-A, supplies the encryption byte code to the decryption unit 82, and supplies the encryption public key to the decryption unit 84. Supply -A and public key-A. The decoder 82 operates as the decoder 72 of FIG. In particular, the decryption unit 82 decrypts the encrypted byte code supplied from the input unit 81 to the original Java byte code by using the public key-A output from the decoder 84. The Java byte code obtained from the decoder 82 is supplied to the Java machine system 83. The Java virtual machine 83 executes the processing defined by the Java byte code supplied from the decoding unit 82. Like the decoder 82, the decoder 84 operates like the decoder 72 of FIG. Specifically, the decryption unit 84 decrypts the encryption public key-A supplied by the input unit 81 using the public key -B also supplied from the input unit 81 as the public key-A, and the resultant public key-. A is supplied to the decoding unit 82.
In the configured program execution system, first, the input unit 81 obtains not only the public key-B but also the encrypted byte code and the encrypted public key-A. For example, when the encrypted byte code and the encryption public key-A are previously transmitted from the software developer server 31 through the network and stored as a file in the auxiliary storage device 66 or the encryption byte code and the encryption public key-A are When a recording medium recorded as a file is set in the user terminal 33, the input unit 81 opens these files and reads out the encrypted byte code and the encrypted public key-A.
Consider the case where the software developer server 31 is connected to the Internet as the network 34. If the encrypted byte code and the encryption public key-A are correlated with a uniform resource locator (URL) in such software developer server 31, the software developer server 31 when the user specifies the URL by manipulating the input unit 64; The input unit 81 receives the encrypted byte code and the encrypted public key-A transmitted from the network.
Consider another case where the software developer server 31 digitally broadcasts the encrypted byte code and the encrypted public key-A by terrestrial or as a network 34 via a satellite line. In this case, the input unit 81 receives the encryption byte code and the encryption public key-A that are being broadcast.
In a similar manner, the input unit 81 obtains the public key-B issued by the program certification authority.
Among the encrypted byte code, encrypted public key-A, and encrypted public key-B, the input unit 81 supplies the encrypted byte code to the decryption unit 82 and supplies the encrypted public key-A and the encrypted public key-B to the decryption unit 84. Supplies).
The decryption unit 84 decrypts the encrypted public key-A supplied from the input unit 81 using the public key-B also supplied from the input unit 81 as the public key-A, and decrypts the resultant public key-A. It supplies to the decoder 82. The decryption unit 82 decrypts the encrypted byte code supplied from the input unit 81 using the public key-A supplied from the decryption unit 82, and supplies the Java byte code as the decryption result to the Java virtual machine 83. . The Java virtual machine 83 translates and executes the Java byte code supplied from the decoding unit 82.
As described above, the decryption unit 84 encrypts and discloses the public key-A using the public key-B corresponding to the secret key-B (paired with) used for encryption in the program certification authority server 32. Decrypt key-A. The decryption unit 82 then decrypts the encrypted byte code using the public key-A corresponding to the secret key-B obtained by the decryption unit 84 via decryption and used for encryption in the software developer server 31. do. The Java byte code as the decoding result is input to the Java machine system 83.
Therefore, a legitimate public key-A cannot be obtained unless the key decrypted using the public key-B is a so-called legitimate encrypted public key-A issued by a program certification authority (the legitimate public key-A is accidentally decrypted by the decryption unit 84). There is a probability that the output is at, and the probability is almost equal to zero). For example, this can be done without using an unencrypted public key-A, an encryption key-A encrypted according to an algorithm different from that used by the program authority server 32, and a secret key-B that should normally be used. Corresponds to the case where the input of an encrypted public key-A is made according to the same algorithm as that used by the certification authority. Therefore, even if the encrypted bytecode is decrypted using this decryption result, it is impossible to obtain an application program which can be executed normally in the Java machine 83; Java virtual machine 83 does not work correctly. As a result, it is possible to restrict the distribution of Java bytecodes operating in the Java virtual machine 83 but not authenticated by the program certification authority to users having a user terminal on which the Java virtual machine 83 is installed.
In this way, only software developers who have a contract with a program certification authority can distribute Java bytecode that operates in the Java virtual machine 83 to users with user terminals that have the Java virtual machine 83 installed. You can do it.
Only the decoding unit 82 needs to take measures to enable Java virtual machine 83 to input Java bytecode. In addition, it is preferable that only the decoding unit 82 take measures to allow the public key-A to be input to the decoding unit 82.
Upon receiving any input, the respective decoding units 82 and 84 shown in Fig. 1 perform decoding processing on the input and output the processing result. therefore,
Java bytecodes that are not encrypted using public key-B, secret key-A, or keys other than public key-A that are not encrypted using secret key-B are entered, and the decryption result or Java bytecode obtained by these keys is Java. When input to the virtual machine 83, the Java virtual machine 83 is usually congested. In consideration of this, it is checked whether or not the output of the decoding unit 82 is a valid Java byte code, and when the output of the decoding unit 83 is valid Java code, the Java virtual machine 83 is a Java byte code. The process of interpreting and executing is possible. For example, when the 32-byte data located at the head of the Java byte code has a normal value called magic (CAFEBEBE in hexadecimal), it is determined that the output of the decoder 82 is a valid Java byte code. 83 can be interpreted and run the Java virtual machine. Thus, the Java virtual machine 83 is prevented from running out.
By the way, from the viewpoint of limiting the execution of the application program on the Java virtual machine 83, it is known to anyone other than the decryption algorithm of the decoding units 82 and 84 of FIG. If the encryption algorithm or secret keys A and B used for encryption are not known, there is no problem. That is, even if the decryption method of the ciphertext is known, the encryption byte key given to the decryption unit 84 or the encryption public key given to the decryption unit 84 is provided to the Java virtual machine 83 to supply the Java byte code that is normally executable. If the method of writing -A is unknown, the execution of the application program on the Java virtual machine 83 may be restricted. However, if you know how to decrypt ciphertext, you can get the original Java bytecode from the encrypted bytecode. By recompiling it, the contents of the Java bytecode can be understood relatively easily, making reverse engineering easier.
In order to prevent such reverse engineering, the decryption method of the ciphertext can be kept secret. For example, a public key B used to decrypt a public key A obtained by encrypting a public key A used to decrypt an encrypted bytecode is always public, but a secret can be kept. 18 shows an example of the configuration of a program execution system in which the public key-B is kept secret. The same reference numerals are assigned to the components of FIG. 18 having corresponding components in FIG. 1, and description thereof is omitted.
In this embodiment, for example, public key-B is located at a single location or distributed in multiple locations of a program constituting a program execution system including Java virtual machine 83. The decryption unit 84 decrypts the cipher text using this public key-B. Therefore, in this case, the public key-B can not be leaked in the program execution system, and the cipher text can be illegally decrypted and reverse engineering can be prevented from being executed (or the probability of occurrence of reverse engineering can be reduced).
Next, a description will be given of processing performed by the software developer 31 and the user terminal 33 when the authentication of the application program is executed through the addition of a signature created using the private key-A. In this case, the program certification authority server 32 executes a process similar to the process executed in the above-described case where the application program is encrypted, so that description thereof is omitted.
First, the processing of the software developer server 31 will be described with reference to the flowchart of FIG. 5. While the above-described processing in relation to the flowchart of Fig. 16 is already executed in the software developer server 31, it is assumed that the encryption public key-A is obtained from the program certification authority server. It is also assumed that an application program running on the Java virtual machine is developed and stored in the auxiliary memory 46.
In the software developer server 31, as in the case of step S6 of FIG. 3, the CPU 41 stores the application program stored in the auxiliary memory 46 according to the Java compiler program (step S21). Compile to code Java bytecode is also supplied to and stored in the secondary memory 46.
Then, the process proceeds sequentially to step S22, and a signature (digital signature) for authenticating that the Java byte code obtained by compilation in step S21 is valid is added to the Java byte code.
In particular, in step S22, the CPU 44 creates a digest of Java bytecode in the same way as, for example, the digest builder 91 of FIG. The process then proceeds to step S23, where the CPU 41 encrypts using the secret key-A and encrypts the digest created in step S22 in the same way as the encryptor 92 of FIG. On the other hand, digital signatures are written. The process then proceeds to step S24, where the digital signature is added to the Java byte code. (In this case, the Java byte code to which the digital signature is added is appropriately referred to as the signature portion byte code.) In step S24, the signature portion The byte code is stored in the secondary storage 46 and correlated with the encryption public key-A. The process then ends.
4 shows an example of the functional configuration of a program execution system as a program execution environment that confirms the validity of an application program and executes only what is legitimate in the user terminal 33. Components of FIG. 4 having components corresponding to those of FIG. 1 are given below using the same reference numerals and the description thereof is omitted.
The input unit 101 basically receives an input in the same manner as the input unit 81 of FIG. 1. The input unit 101 differs from the latter in that the signature unit receives the byte code (Java byte code to which a signature (digital signature) is added) instead of the encrypted byte code. The input unit 101 outputs the signature unit by dividing the byte code into a signature and a Java byte code. This signature is supplied to the signature verification unit 103 and the Java byte code is supplied to the message digest system 102 and the virtual machine input control unit 104.
The message digest system 102 performs a process similar to the process executed in the digest builder 94 of FIG. That is, the message digest system 102 creates a digest from Java bytecode and supplies it to the signature verification unit 103. The signature confirming unit 103 corresponds to the decoder 93 and the signature confirming unit 95 in FIG. 15, and confirms the validity of the signature supplied from the input unit 101.
In particular, the signature verification unit 103 receives the public key-A in the decryption unit 84 as well as the signature in the input unit 101 and the digest in the message digest system 102. The signature verification unit 103 decrypts the signature into a digest using the received public key-A, and compares the digest thus obtained with the digest supplied by the message digest system 102 to confirm the validity of the signature. In addition, the signature verification unit 103 controls the virtual machine input control unit 104 in accordance with the verification result.
The virtual machine input control unit 104 controls the supply of the Java byte code supplied from the input unit 101 to the Java virtual machine 83 under the control of the signature confirmation unit 103.
In the configured program execution system, first, the input unit 101 obtains the byte code and the encryption public key-A as well as the public key-B in the same manner as the input unit 81 of FIG. Then, the input unit 101 separates the byte code into a signature and a Java byte code, supplies the signature to the signature verification unit 103, and supplies the Java byte code to the message digest system 102 and the virtual machine input control unit 104. To feed. The input unit 101 also supplies the encryption public key-A and the public key-B to the decryption unit 84. As described above with respect to Fig. 1, the decryption unit 84 decrypts the encryption public key-A as the public key-A using the public key-B and obtains the obtained public key-A into the signature verification unit 103. Supply.
On the other hand, the message digest system 102 creates a digest from the Java byte code supplied from the input unit 101, and supplies the digest to the signature verification unit 103. The signature verification unit 103 decrypts the signature supplied from the input unit 101 by using the public key-A supplied from the decryption unit 84 as a digest. In addition, the signature verification unit 103 compares the digest obtained from the decryption with the digest supplied from the message digest system 102 and determines the validity of the signature supplied from the input unit 101 based on whether or not the two digests match each other. do.
If the validity of the signature is confirmed, i.e., the digest obtained by decoding the signature matches the digest supplied by the message digest system 102, the signature verification unit 103 determines that the Java byte code supplied from the input unit 101 is Java virtual. The virtual machine input control unit 104 is controlled to be the output of the machine 83. The virtual machine input control unit 104 supplies the Java byte code supplied from the input unit 101 to the Java virtual machine 83 under the control of the signature verification unit 103.
In this case, therefore, the Java virtual machine 83 interprets and executes the Java byte code supplied from the input unit 101 via the virtual machine input control unit 104.
On the other hand, if the validity of the signature is not verified, i.e., the digest obtained by decoding the signature does not match the digest supplied by the message digest system 102, the signature verification unit 103 is a Java byte supplied from the input unit 101. The virtual machine input control unit 104 is controlled so that code does not become an output of the Java virtual machine 83.
In this case, the virtual machine input control unit 104 does not output the Java byte code supplied from the input unit 101 to the Java machine system 83. Therefore, Java virtual machine 83 does not perform any operation.
As described above, even in the case where a signature is added to authenticate an application program, a program authentication authority is executed in the Java virtual machine 83 to a user having a user terminal 33 on which the Java virtual machine 83 is installed. This allows you to restrict the distribution of unauthenticated Java bytecode. That is, only a software developer who has a contract with a program certification authority can distribute Java bytecode executed in the Java virtual machine 83 to a user having a user terminal 33 on which the Java virtual machine 83 is installed. It becomes possible. Developers of the Java virtual machine 83 may receive a licensing fee for use of the Java virtual machine 83 from a software developer who wishes to distribute Java bytecode running on the Java virtual machine 83.
As described above, even in the case of adding a signature, it is also possible to restrict the execution on the machine 83, for example, a distorted version of the signed Java bytecode.
In the embodiment of Fig. 4, only the virtual machine input control unit 104 needs to take measures to input the Java bytecode into the Java machine 83. In addition, it is necessary to take an action such that only the decryption unit 84 inputs the public key-A into the signature verification unit 103.
Note that the Java bytecode itself exists when the signature is appended to the Java bytecode, unlike when the Java bytecode is encrypted. Therefore, in a program execution system that does not check the validity of the signature (for example, in a program execution system in which Java byte code is directly input to the Java virtual machine 83 as an output of the input unit 101), the Java byte code is Interpreted and executed without limitation.
Conversely, when a signature is added to the Java byte code, the developer and seller of the Java virtual machine, the seller who sells the Java virtual machine and the like installed in the user terminal can configure the program execution system as shown in FIG. Those who do not want to restrict the execution of Java bytecode can configure a program execution system whose signature is not justified.
In the embodiment of FIG. 10, the program certification authority provides the program execution system to the user in a way that can still be installed on the user terminal 33 as software (i.e., a program that allows the user terminal to function as a program execution system). The program execution system may be provided in such a manner as to be encrypted or signed with the application provided by the software developer.
For example, if the program certification authority provides the user with a signed program execution system, the program certification authority server executes the processing according to the flowchart of FIG.
In this case, the program certification authority server 32 first, in step S31, code that can execute a program as the program execution system by the CPU 61 of the user terminal 33 (hereinafter referred to as an enemy execution code). Compile with. In step S32, the CPU 51 creates a digest from the executable code obtained by compiling in step S31, for example, in the manner described in connection with FIG. The process then goes to step S33, for example, encrypting the digest created in step S32 using a secret key-B used to encrypt public key-A and creating a signature (digital signature). In step S34, the digital signature is added to the executable code (hereinafter referred to as executable code with digital signature), and the signed bytecode is the secret key used to create the signature. It is stored in the secondary storage 56 so as to be correlated with the public key-B paired with B.
Fig. 20 shows an example of a functional configuration of a loader (program execution system installation apparatus) for installing the above type of program execution system (signature execution system) with a signature added to the user terminal.
In this embodiment, the loader consists of an input unit 111, a message digest system 112, a signature verification unit 113, and an execution system 114. The input unit 111, the message digest system 112, and the signature verification unit 113 are configured in the same manner as the input unit 101, the message digest system 102, and the signature verification unit 103 of FIG. 4. The execution system 114 corresponds to those portions of the user terminal including the CPU 61 and interprets and executes the execution code.
In the loader of the above configuration, the input unit 111 obtains the execution unit and the public key-B from the signature unit. Then, the input unit 111 separates the execution code into a signature and execution code, supplies the signature to the signature verification unit 113, and supplies the execution code to the message digest system 11 and the execution system 114. In addition, the input unit 111 supplies the public key-B to the signature verification unit 113.
The message digest system 112 creates a digest from the Java bytecode supplied from the input unit 111 and supplies the created digest to the signature verification unit 113. The signature verification unit 113 decrypts the signature supplied from the input unit 111 using the public key-B supplied from the input unit 111 as a digest. In addition, the signature verification unit 113 compares the digest obtained from the decoding with the digest supplied from the message digest system 112 and determines the validity of the signature supplied from the input unit 111 based on whether or not the two digests match each other. do.
When the validity of the signature is confirmed, that is, the digest obtained by decoding the signature matches the digest supplied by the message digest system 112, the signature verification unit 113 interprets the Java byte code supplied by the input unit 111 and Control execution system 114 to execute. In this case, the execution system 114 interprets and executes the execution code supplied from the input unit 111 under the control of the signature verification unit 113.
On the other hand, if the validity of the signature is not verified, that is, the digest obtained by decoding the signature does not match the digest supplied from the message digest system 112, the signature verification unit 113 provides the Java byte supplied from the input unit 111. The execution system 114 is controlled so that the code is ignored. In this case, the execution system 114 ignores the execution code supplied from the input unit 111 under the control of the signature verification unit 113 and does not execute any processing.
As described above, when a signature is added to the program execution system, deformation and the like are prevented.
As described above, in any case where reverse engineering on the program execution system can be prevented, the program execution system can be encrypted.
When the validity of the signature added to the program execution system is confirmed, the execution system 114 interprets and executes the execution code supplied from the input unit 111 as described above. As a result, for example, a program execution system similar to the program execution system installed in the case of FIG. 4 is installed in the user terminal 33 as shown in FIG. However, in this case, the public key-B is supplied to the decoding unit 84 at the input unit 111 of the loader of FIG. 20 rather than the input unit 101.
However, a considerable amount of time is required to encrypt or decrypt an encrypted version of a program having a relatively large amount of information, such as an application program or a program of a program execution system according to a public key encryption method such as an RSA method. In contrast, encryption / decryption according to common key cryptography, such as the DES scheme, can even be a program with a large amount of information to be processed in a relatively short time. On the other hand, since the public key is different from the secret key used for encryption, the RSA method does not cause any problem even if the public key used for decryption is considered to be open to the public as described above. However, in the DES system, since the common key is used for encryption and decryption, it is necessary to strictly manage the common key so that it is not known to anyone other than the party.
In view of the above, a technique that facilitates key management as well as encryption and decryption that can be executed in a short time can be used. In particular, the DES method is used to encrypt a program having a relatively large amount of information such as an application program, and the common key used for the DES method encryption is encrypted according to the RSA method. Called a combination method).
Fig. 22 shows an example of the functional configuration of the software developer server 31 in the case where encryption is executed according to the combination method.
The Java byte code obtained by compiling the application program with the Java compiler is input to the encryptor 121. In addition to the Java byte code, a common key is input to the encryptor 121. In the encryptor 121, the Java byte code is encrypted with an encrypted byte code (password) using, for example, a common key conforming to the DES method.
The common key input to the encryptor 121 is also input to the encryptor 122. For example, the encryptor 122 in which encryption is performed in accordance with the RSA method encrypts the common key using the secret key-A.
In this case, the software developer distributes to the user a set of encrypted bytecodes, a common key encrypted using a secret key-A (hereinafter referred to as an encrypted common key), and an encrypted public key-A obtained from a program certification authority. do.
2 shows an example of the functional configuration of a program execution system executed in the user terminal 33 when encryption of an application program is executed in accordance with the combination method. The components in FIG. 2 having corresponding components in the program execution system of FIG. 1 are given the same reference numerals below, and description thereof is omitted.
The decryption unit 131 decrypts the encrypted public key according to the RSA method, for example, and supplies the common key as the decryption result to the decryption unit 132. The decryption unit 1320 decodes the encrypted bytecode according to the DES method, for example.
In the program execution system having the above configuration, the input unit 81 obtains an encryption byte code (an encryption Java byte code), an encryption common key, an encryption public key-A, and a public key-B. Then, the input unit 81 supplies the encryption public key-A and the public key-B to the decryption unit 84, supplies the encrypted common key to the decryption unit 131, and supplies the encryption byte code to the decryption unit 132. do.
As described above, the decryption unit 84 decrypts the encrypted public key-A with the public key-A using the public key-B and supplies the resultant public key-A to the decryption unit 131. The decryption unit 131 decrypts the encryption common key supplied from the input unit 81 using the public key-A supplied from the decryption unit 84, and supplies the resulting common key to the decryption unit 132. The decoding unit 132 decodes the encrypted byte code supplied from the input unit 81 into the Java byte code using the common key supplied from the decoding unit 131, and converts the resulting Java byte code into the Java virtual machine 83. Supply.
The combination method described above can simplify key management and increase the processing speed of encryption and decryption.
The combination method can be applied not only to the case of encryption of an application program but also to the case of encrypting a program (executable code) of a program execution system and other cases.
The present invention can be applied to virtual machines other than the Java virtual machine as well as two Java virtual machines of the interpreter type and the JIT compiler type described above. The present invention is applicable to the case where the input of the program execution system is made through the machine code as in the case of the processing system of C language or C ++ language, and the input of the program execution system is made through the source code as in the case of the processing system of the Basic language. Can be.
1 and 4 provided in a single program execution system, the program execution system may be installed in multiple user terminals 33. It can be executed by the following example. When multiple inputs 81 or 101 are provided, the ciphertext or signature portion bytecodes can be entered in multiple paths. When a plurality of decoders 82 and / or 84 are installed, they can be decoded according to a plurality of decryption algorithms. When multiple Java virtual machines 83 are installed, they can support multiple Java bytecode formats. In addition, when a plurality of message digest systems 102 and a plurality of signature verification units 103 are provided, each of a plurality of signatures applied according to a plurality of technologies can be confirmed.
Although encryption or signing was performed using a single key in the above embodiment, it can be executed using multiple keys. For example, the encryption operation can be executed sequentially using multiple keys and the signature can be written in the same number as the keys.
In the above embodiment, the Java bytecode may be in a number of forms such as Java Application, Java Applet, Java Benas, Java Class Library.
In the information processing apparatus according to the first aspect of the present invention and the information processing method according to the second aspect of the present invention, the encrypted version of the first key necessary for decrypting the encrypted version of the program is decrypted using the second key, The encrypted version of the program is decrypted using the first key obtained by decryption. The program obtained by decoding is then executed. In the recording medium according to the third aspect of the present invention, a computer decrypts an encrypted version of a first key necessary for decrypting an encrypted version of a program using a second key, and uses a first key obtained by decrypting the program. The program for decrypting the encrypted version and executing the program obtained by decrypting is recorded. Therefore, the program can be executed only when the first key and the program are decoded.
In the information processing apparatus according to the fourth aspect of the present invention and the information processing method according to the fifth aspect of the present invention, the program is encrypted with a cipher text that is decoded into a code that can be executed by the information processing apparatus according to the first aspect of the present invention. do. In the recording medium according to the sixth aspect of the present invention, a program encrypted with a cipher text that is decrypted with a code executable by the information processing apparatus according to the first aspect of the present invention is recorded. Therefore, it is possible to provide an encryption program that can be executed by the information processing apparatus according to the first aspect of the present invention.
In the information processing apparatus according to the seventh aspect of the present invention and the information processing method according to the eighth aspect of the present invention, the encrypted version of the first key used to verify the signature added to the program is decrypted using the second key. Then, it is checked whether the signature added to the program is valid using the first key obtained through decryption. The program will only run when it is confirmed legitimate. In a recording medium according to the ninth aspect of the present invention, a first key obtained by decrypting an encrypted version of a first key used for verifying a signature added to a program by a computer by using a second key. Is used to check whether the signature being added to the program is legitimate or not, and the program is recorded so as to execute the program only when it is confirmed to be legitimate. Therefore, it is possible to execute the program only when the signature is written to the program.
In the information processing apparatus according to the tenth aspect of the present invention and the information processing method according to the eleventh aspect of the present invention, the program is processed so that the signature is verified as legitimate in the information processing apparatus according to the seventh aspect of the present invention. In the recording medium according to the twelfth aspect of the present invention, in the information processing apparatus according to the seventh aspect of the present invention, a program is processed so that the signature is verified as being legitimate. Therefore, it is possible to provide a program processed to be executable by the information processing apparatus according to the seventh aspect of the present invention.
权利要求:
Claims (15)
[1" claim-type="Currently amended] In an information processing apparatus for executing a process for executing a program,
First key decrypting means for decrypting the encrypted version of the first key necessary for decrypting the encrypted version of the program using the second key,
Program decrypting means for decrypting the encrypted version of the program using the first key obtained by decrypting by the first key decrypting means;
Execution means for executing a program output from the program decoding means;
Information processing device characterized in that
[2" claim-type="Currently amended] The method of claim 1,
And second key decrypting means for decrypting the encrypted version of the second key using the third key when the second key is encrypted.
[3" claim-type="Currently amended] The method of claim 2,
The first key is a common key used to encrypt a program according to the common key encryption method,
The second key is a public key corresponding to a secret key used for encrypting the first key according to the common key encryption method,
And the third key is a public key corresponding to a secret key used for encrypting the second key according to the common key encryption method.
[4" claim-type="Currently amended] The method of claim 1,
And the program decrypting means decrypts the encrypted version of the program using a plurality of first keys.
[5" claim-type="Currently amended] In the information processing method for performing a process for executing a program,
Decrypting the encrypted version of the first key necessary for decrypting the encrypted version of the program using the second key,
Decrypts the encrypted version of the program using the first key obtained through decryption,
An information processing method comprising the step of executing a program obtained by decoding.
[6" claim-type="Currently amended] In a recording medium on which a program is recorded,
Decrypting the encrypted version of the first key necessary for decrypting the encrypted version of the program using the second key,
Decrypts the encrypted version of the program using the first key obtained through decryption,
A recording medium, characterized in that a program is recorded for causing a computer to execute a program obtained by decoding.
[7" claim-type="Currently amended] The method of claim 1,
And an encrypting means for encrypting the program with an encrypted text decrypted into a code which can be executed by the information processing apparatus.
[8" claim-type="Currently amended] The method of claim 1,
And encrypting the program with a cipher text that is decrypted by a code that can be executed by the information processing apparatus.
[9" claim-type="Currently amended] The method of claim 1,
And a program encrypted with a cipher text decrypted by a code that can be executed by the information processing apparatus.
[10" claim-type="Currently amended] In an information processing apparatus for executing a process for executing a program,
Execution means for executing the program,
Key decrypting means for decrypting, using the second key, an encrypted version of the first key used to verify a signature added to the program;
Verification means for confirming whether or not the signature added to the program is legitimate using the first key obtained through decryption by the key decryption means;
And supplying means for supplying to the executing means a program which has been confirmed as legitimate by the confirming means and to which a signature has been added.
[11" claim-type="Currently amended] In the information processing method for performing a process for executing a program,
Decrypts the encrypted version of the first key used to verify the signature added to the program using the second key,
The first key obtained through decryption is used to check whether the signature added to the program is valid or not.
And executing the program only when it is confirmed that it is legitimate.
[12" claim-type="Currently amended] The computer
Decrypts the encrypted version of the first key used to verify the signature added to the program using the second key,
The first key obtained through decryption is used to check whether the signature added to the program is valid or not.
A recording medium, characterized in that a program is recorded so as to execute the program only when it is confirmed to be legitimate.
[13" claim-type="Currently amended] The method of claim 10,
And processing means for processing the program such that the signature is verified as legitimate in the information processing apparatus.
[14" claim-type="Currently amended] The method of claim 10,
And processing the program such that the signature is verified as legitimate at the information processing apparatus.
[15" claim-type="Currently amended] The method of claim 10,
A recording medium, characterized in that the program is processed so that the signature is verified in the information processing device.
类似技术:
公开号 | 公开日 | 专利标题
US9569627B2|2017-02-14|Systems and methods for governing content rendering, protection, and management applications
US9106425B2|2015-08-11|Method and system for restricting execution of virtual applications to a managed process environment
Anati et al.2013|Innovative technology for CPU based attestation and sealing
US8886947B2|2014-11-11|Optimized integrity verification procedures
US8670568B2|2014-03-11|Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
CN102404314B|2015-01-14|Remote resources single-point sign on
CN102271037B|2016-03-02|Based on the key protectors of online key
US8856513B2|2014-10-07|Programming on-chip non-volatile memory in a secure processor using a sequence number
US8660266B2|2014-02-25|Method of delivering direct proof private keys to devices using an on-line service
US8447889B2|2013-05-21|Portable mass storage device with virtual machine activation
EP0778522B1|2005-09-21|System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
AU2004200461B2|2009-09-17|Issuing a publisher use license off-line in a digital rights management | system
US5757915A|1998-05-26|Parameterized hash functions for access control
ES2271427T3|2007-04-16|Plugged server architecture secured for digital rights management systems.
JP4366037B2|2009-11-18|System and method for controlling and exercising access rights to encrypted media
US5970145A|1999-10-19|System and method for protecting use of dynamically linked executable modules
JP5060652B2|2012-10-31|How to unlock the secret of the calling program
US6871276B1|2005-03-22|Controlled-content recoverable blinded certificates
EP2080311B1|2019-11-27|Secure device authentication system and method
US5673316A|1997-09-30|Creation and distribution of cryptographic envelope
CN100454274C|2009-01-21|Safty printing using secrete key after being checked
EP1391801B1|2020-02-12|Saving and retrieving data based on public key encryption
US7539312B2|2009-05-26|Program update method and server
US6959382B1|2005-10-25|Digital signature service
JP4418648B2|2010-02-17|System and method for issuing licenses for use of digital content and services
同族专利:
公开号 | 公开日
DE69837303T2|2007-11-29|
CN1208193A|1999-02-17|
CN1130627C|2003-12-10|
EP0875814A2|1998-11-04|
US6647495B1|2003-11-11|
EP0875814B1|2007-03-14|
DE69837303D1|2007-04-26|
JPH10301773A|1998-11-13|
TW405096B|2000-09-11|
EP0875814A3|2004-05-26|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
1997-04-30|Priority to JP11218297A
1997-04-30|Priority to JP97-112182
1998-04-23|Application filed by 이데이노브유끼, 소니가부시끼가이샤
1998-11-25|Publication of KR19980081644A
优先权:
申请号 | 申请日 | 专利标题
JP11218297A|JPH10301773A|1997-04-30|1997-04-30|Information processor and method therefor and recording medium|
JP97-112182|1997-04-30|
[返回顶部]